package cn.snowheart

/**
 * 文件读写
 *
 * @author liuwanxiang
 * @version 2019/05/31
 */
class FileIoExample {

    static void main(String[] args) {

        def file = new File("E:\\Example.txt")

        // 打印文件的每一行
        file.eachLine {
            line -> println "line: $line"
        }

        // 打印file的文件内容，读取文件内容到字符串
        println(file.text)

        // 写入文件
        file.withWriter('UTF-8') {
            writer -> writer.writeLine("Hello World~")
        }

        // 获取文件大小
        println("file ${file.absolutePath} has ${file.length()} bytes")

        // 测试文件是否是目录
        println("File: ${file.isFile()}")
        println("Directory: ${file.isDirectory()}")

        // 创建目录
        file = new File("E:\\Directory")
        if (!file.exists()){
            file.mkdir()
        }

        // 删除文件/目录
        file.delete()

        // 复制文件
        file = new File("E:\\Example.txt")
        def file1 = new File("E:\\Example1.txt")
        file1 << file.text

        println("===================")

        // 获取目录内容
        // listRoots 列出驱动器
        def roots = file.listRoots()
        roots.each {root -> println root.absolutePath}

        // 列出目录下的内容
        file = new File("C:\\Windows\\Temp")
        file.eachFile {
            subFile -> println subFile.name
        }

        // 递归列出子目录
        file.eachFileRecurse {
            subFile -> println subFile.absolutePath
        }
    }

}
